/**
 * @desc:策略
 * @author:齐俊星
 * @date:2017年4月29日
 */
var zTree;
var rMenu;
/**
 * 初始化块
 */
$(function() {
	initZtree();
	initMethod();// 初始化按钮方法
});

function initMethod() {
	//策略添加
	$("#addPolicy").click(function(){
		layer.config({
            extend:['skin/layer_iframe.css'],
            skin:'layer-ext-skin-layer_iframe.css'
        });
        layer.open({
            type:2,
            title:'添加策略',
            area:['600px','400px'],
            content:basePath+'/radar/strategy/strategyAdd.jsp',
            maxmin: true,
            shadeClose: true

        });
	});
	
	
	// 1 绑定计划添加按钮
	$("#addPlan").click(
			function() {

				var node = zTree.getSelectedNodes()[0];
				// 点击计划时间的时候

				if (node == null || node.id == null || node.id == '') {
					layer.msg("请先选择需要添加计划的策略！");
					return;
				}
				if (node.isParent) {
					return;
				}
				layer.config({
					extend : [ 'skin/layer_iframe.css' ],
					skin : 'layer-ext-skin-layer_iframe.css'
				});
				layer.open({
					type : 2,
					title : '添加计划',
					area : [ '800px', '450px' ],
					content : 'initAddPlan.do?opera=add&type=' + node.type
							+ '&strategyId=' + node.id,
					maxmin : true,
					shadeClose : true
				});
			});

	// dialog 增加设备
	$("#addEqurpment").click(
			function() {
				var node = zTree.getSelectedNodes()[0];
				// 点击计划时间的时候

				if (node == null || node.id == null || node.id == '') {
					layer.msg("请先选择策略！");
					return;
				}
				if (node.isParent) {
					return;
				}
				layer.open({
					extend : [ 'skin/layer_iframe.css' ],
					skin : 'layer-ext-skin-layer_iframe.css',
					type : 2,
					title : '添加设备',
					area : [ '800px', '560px' ],
					content : basePath
							+ '/radar/strategy/managerBundEquip.do?strategyId='
							+ node.id + '&type=' + node.pname,
					maxmin : true,
					shadeClose : true
				});
			});
}

// ==========策略树
/**
 * 初始化ztree初始化
 */
function initZtree() {
	// 策略维护树
	var setting = {
		data : {
			key : {
				url : "u",
				title : "title"
			},
			simpleData : {
				enable : true
			}
		},
		view : {
			dblClickExpand : false
		},
		callback : {
			onClick : onClick,
			onRightClick : onRightClick,
			beforeRename : zTreeBeforeRename
		}
	};

	$.fn.zTree.init($("#treeWay"), setting, strategyTree);
	zTree = $.fn.zTree.getZTreeObj("treeWay");
	rMenu = $("#rMenu");
}

/**
 * 策略树鼠标右键
 * 
 * @param event
 * @param treeId
 * @param treeNode
 */
function onRightClick(event, treeId, treeNode) {
	if (treeNode && treeNode.noParent) {
		return;
	}
	if (treeNode
			&& (treeNode.pId == "os" || treeNode.pId == "db" || treeNode.pId == "network")) {
		zTree.selectNode(treeNode);
		showRMenu("noParent", event.clientX, event.clientY);
	} else if (treeNode && !treeNode.noR) {
		zTree.selectNode(treeNode);
		showRMenu("node", event.clientX, event.clientY);
	}
}
/**
 * 显示右键菜单
 * 
 * @param type
 *            节点类型
 * @param x
 *            坐标
 * @param y
 *            坐标
 */
function showRMenu(type, x, y) {
	$("#rMenu ul").show();
	if (type == "noParent") {
		$("#m_add").show();
		$("#m_del").hide();
		$("#m_eidt").hide();
		$("#m_copy").hide();
	} else {
		$("#m_add").hide();
		$("#m_eidt").show();
		$("#m_copy").show();
		$("#m_del").show();
	}
	rMenu.css({
		"top" : y + "px",
		"left" : x + "px",
		"visibility" : "visible"
	});
	$("body").bind("mousedown", onBodyMouseDown);
}

/**
 * 右键菜单点击事件
 * 
 * @param event
 */
function onBodyMouseDown(event) {
	if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length > 0)) {
		rMenu.css({
			"visibility" : "hidden"
		});
	}
}
/**
 * 隐藏右键菜单
 * 
 * @param event
 */
function hideRMenu() {
	if (rMenu)
		rMenu.css({
			"visibility" : "hidden"
		});
	$("body").unbind("mousedown", onBodyMouseDown);
}

var addCount = 1;
var addId = 1;
/**
 * 添加策略文件
 */
function addTreeNode() {// 新增
	hideRMenu();
	var selectNode = zTree.getSelectedNodes()[0];
	// 数据库中添加一条策略
	var name = "未命名";
	var typestr = selectNode.type;
	$.ajax({
		url : basePath + "/radar/strategy/savestategy.do",
		type : "POST",
		dataType : 'json',
		data : {
			"name" : name,
			"type" : typestr
		},
		beforeSend : function() {
			$("#saveBtn").attr("disabled", "disabled");
			$("#saveflag").html("正在保存中，请稍后......");
		},
		error : function(data) {
			alert(data)
		},
		success : function(data) {
			if (data.errorMessage == "") {
				var collectorStrategy = data.data;
				addStrategy(collectorStrategy.collectorStrategyId,
						collectorStrategy.name, collectorStrategy.type);
			} else {
				layer.msg('保存失败！', {
					icon : 1
				});
				$("#saveBtn").removeAttr("disabled");
			}
		}
	});
}

/**
 * 添加策略并将节点移动到最前面进入节点名称修改状态
 * 
 * @param treeId
 * @param treeName
 * @param treeType
 */
function addStrategy(treeId, treeName, treeType) {
	var treeObj = $.fn.zTree.getZTreeObj("treeWay");
	// 获取策略类型根节点
	var node = treeObj.getNodeByParam("id", treeType, null);
	// 要添加的节点
	var addNodes = {
		id : treeId,
		name : treeName,
		title : '',
		type : treeType,
		pname:node.pname
	};
	// 添加节点
	var resultNode = treeObj.addNodes(node, addNodes);
	// 移动节点为第一个子节点
	var nodes = node.children;
	var moveNode = treeObj.moveNode(nodes[0], resultNode[0], "prev");
	$("#" + moveNode.tId + "_a").click();
	treeObj.editName(moveNode);
}

/**
 * 使节点进入编辑状态(修改策略名称)
 */
function eidtTree() {
	hideRMenu();
	if (zTree.getSelectedNodes()[0]) {
		var nodes = zTree.getSelectedNodes()[0];
		zTree.editName(nodes);
	}
}

/**
 * 修改树名称保存修改之前回调函数 后台修改策略名称
 * 
 * @param treeId
 * @param treeNode
 * @param newName
 * @param isCancel
 * @returns {Boolean}
 */
function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
	var flag = true;
	var name = newName;
	var oldName = treeNode.name;
	var typeStr = encodeURI(treeNode.type);

	$.ajax({
		url : basePath + "/radar/strategy/savestategy.do",
		type : "POST",
		dataType : 'json',
		data : {
			"collectorStrategyId" : treeNode.id,
			"name" : name,
			"type" : typeStr
		},
		success : function(data) {
			if (data.errorMessage == "") {
			} else {
				layer.msg('重命名失败！', {
					icon : 1
				});
			}
		}
	});
	return flag;
}

/**
 * 删除策略
 */
function removeTreeNode() {
	hideRMenu();
	var nodes = zTree.getSelectedNodes();
	// 检验是否有设备正在运行策略
	if (nodes && nodes.length > 0) {
		// 删除时提示信息
		$.ajax({
			url : basePath + "/radar/strategy/getApplyStrategyEquips.do",
			type : "post",
			async : false,
			dataType : 'json',
			data : {
				"strategyId" : nodes[0].id
			},
			success : function(result) {
				applyStrategyEquips = result.data;
			}
		});
		var tipDelMsg = "";
		if (applyStrategyEquips != "0") {
			tipDelMsg = applyStrategyEquips + "台设备正在执行计划，确认删除？"
		} else {
			tipDelMsg = "确认删除？"
		}
		var index = layer.confirm(tipDelMsg, {
			btn : [ '确定', '取消' ]
		// 按钮
		}, function() {
			// 删除策略
			$.ajax({
				url : basePath + "/radar/strategy/deleteStrategy.do",
				type : "post",
				dataType : 'json',
				data : {
					"strategyId" : nodes[0].id,
					"resourceType" : nodes[0].pname
				},
				success : function(result) {
					var data = result.data;
					if (data.indexOf("error-") == 0) {
						var tipMsg = result.substring(6, result.length);
						layer.msg('删除失败！');
					} else {
						// 重置
						// resetValue();
						$("#planList").html("");
						$("#strategyEquipList").html("");
						$("#pageMenu").html("");
						var nodeP = nodes[0].getParentNode();
						zTree.removeNode(nodes[0]);
						nodeP.isParent = true;
						zTree.updateNode(nodeP);
						clean("plan");
						clean("equipment");
						layer.msg('删除成功！', {
							icon : 1
						});
					}
				}
			});
		});
	}
}

function onClick(event, treeId, treeNode, clickFlag) {
	$("#planTimeTab").click();
	queryPlan();// 初始化计划列表
	queryEquipment();// 初始化设备绑定
}

/**
 * 显示计划列表
 */

function queryPlan() {

	var node = zTree.getSelectedNodes()[0];
	// 点击计划时间的时候
	if (node.isParent) {
		return;
	}
	if (node != null && node.id != null && node.id != '') {
		var plan = [ {
			code : 'collectorStrategydateId',
			name : 'checkBox',
			width : 10
		}, {
			code : 'name',
			name : '计划名称'
		},  {
			code : 'D_E',
			name : '操作'
		}, ];
		var parm = {
			url : basePath + '/radar/strategy/getPlanBySid.do',
			divID : 'plan'
		};// 常规参数
		var data = {
			'strategyId' : node.id,
			'resourceType' : node.pname
		}; // 赛选

		easyQuery(plan, parm, data);
	}

}
// -------------------------计划div
/**
 * 操作 修改按钮
 * 
 * @param feild
 */
function edit_plan(feild) {

	var planID = $(feild).parent().parent().attr("nodeId");// 计划Id
	var node = zTree.getSelectedNodes()[0];
	// 点击计划时间的时候
	layer.config({
		extend : [ 'skin/layer_iframe.css' ],
		skin : 'layer-ext-skin-layer_iframe.css'
	});
	layer.open({
		type : 2,
		title : '添加计划',
		area : [ '800px', '450px' ],
		content : 'initAddPlan.do?opera=edit&type=' + node.type
				+ '&strategyId=' + node.id + '&planID=' + planID,
		maxmin : true,
		shadeClose : true
	});
}

/**
 * 操作 计划删除按钮
 */
function del_plan(feild) {
	var planID = $(feild).parent().parent().attr("nodeId");// 计划Id	
	deletePlan(planID);
}

/**
 * 删除按钮
 */
function delplan() {
	var id = '';
	$("input[type='checkbox'][nodeId][ divID='plan']:checked").each(function() {
		id = id + $(this).attr("nodeId") + ",";
	});
	if (id == '') {
		layer.msg('请选择要删除的选项', {
			icon : 1
		});
		return;
	}
	id = id.substring(0, id.length - 1);
	deletePlan(id);
}
/**
 * 计划删除
 * 
 */
function deletePlan(planIDs){
	
	var strategyIdStr = zTree.getSelectedNodes()[0].id + "";// 选中节点
	var strategyId = "";// 策略id
	if (strategyIdStr.indexOf("_") > 0) {
		strategyId = strategyIdStr.substring(strategyIdStr.indexOf("_") + 1,
				strategyIdStr.length);
	} else {
		strategyId = strategyIdStr;
	}
	var applyStrategyEquips = "";
	// 检测该策略是否有机器正在执行。
	$.ajax({
		url : basePath + "/radar/strategy/getApplyStrategyEquips.do",
		type : "post",
		async : false,
		dataType : 'json',
		data : {
			"strategyId" : strategyId
		},
		success : function(result) {
			applyStrategyEquips = result.data;
		}
	});
	var tipDelMsg = "";
	if (applyStrategyEquips != "0") {
		tipDelMsg = applyStrategyEquips + "台设备正在执行计划，确认删除？"
	} else {
		tipDelMsg = "确认删除？"
	}
	layer.confirm(tipDelMsg, {
		btn : [ '确定', '取消' ]
	// 按钮
	}, function() {
		$.ajax({
			url : basePath + "/radar/strategy/deleteStrategyDate.do",
			type : "post",
			dataType : 'json',
			data : {
				"strategydateId" : planIDs
			},
			success : function(result) {
				if (result.data == 'success') {
					layer.msg('删除成功！', {
						icon : 1
					});
					reQuery("plan");
				} else {
					layer.msg('删除失败！', {
						icon : 1
					});
				}
			}
		});
	});
}
// ============设备div==========

/**
 * 查询 展示设备div
 */
function queryEquipment() {
    var resourceName=$("#resourceName").val();
	var node = zTree.getSelectedNodes()[0];
	// 点击计划时间的时候
	if (node.isParent) {
		return;
	}

	if (node != null && node.id != null && node.id != '') {
		var plan = [ {
			code : 'seID',
			name : 'checkBox',
			width : 10
		}, {
			code : 'resourceIp',
			name : '设备IP'
		}, {
			code : 'resourceName',
			name : '名称'
		}, {
			code : 'modelName',
			name : '设备类型'
		}, {
			code : 'account',
			name : '账户名'
		}, {
			code : 'collectIp',
			name : '采集器IP'
		}, {
			code : 'state',
			name : '策略状态'
		}, {
			code : 'D_B',
			name : '操作'
		}, ];
		var parm = {
			url : basePath + '/radar/strategy/getEquipmentView.do',
			divID : 'equipment',
			 isWarning:false
		};// 常规参数
		var data = {
			'strategyId' : node.id,
			'resourceName':resourceName
		}; // 赛选

		easyQuery(plan, parm, data);
	}

}

/**
 * 操作 设备删除按钮
 */
function del_equipment(feild) {
	var id = $(feild).parent().parent().attr("nodeId");
	delEq(id);
}
/**
 * 删除按钮
 */
function deleteStrategyBundEquip() {
	var id = '';
	$("input[type='checkbox'][ divID='equipment']:checked").each(function() {
		id = id + $(this).attr("nodeId") + ",";
	});
	if (id == '') {
		layer.msg('请选择要删除的选项', {
			icon : 1
		});
		return;
	}
	id = id.substring(0, id.length - 1);
	delEq(id);
}
/**
 * @param id
 */
function delEq(id) {
	var node = zTree.getSelectedNodes()[0];
	layer.confirm("确定要删除该设备？", {
		btn : [ '确定', '取消' ]
	// 按钮
	}, function() {
		$.ajax({
			url : basePath + "/radar/strategy/deleteStrategyResource.do",
			type : "post",
			dataType : 'json',
			data : {
				"id" : id, // 绑定 设备的id
				"resourceType" : node.pname
			},
			success : function(result) {
				if (result.data == 'success') {
					layer.msg('删除成功！', {
						icon : 1
					});
					reQuery("equipment");
				} else {
					layer.msg('删除失败！', {
						icon : 1
					});
				}
			}
		});
	});
}

	/**
	 * 按钮执行未应用全部策略
	 */
	function appAllStrategy() {
		var  ids='';
		$("td[code='state']").each(function() {
			var   value=$(this).html();
			if(value=='未应用'||value=='应用失败'){
				ids=ids+$(this).parent().attr("nodeId")+","
			}
			
		});
		if(ids==''){
			layer.msg('没有可应用的策略！', {
				icon : 1
			});
		}else{
			ids=ids.substring(0,ids.length-1);
		}
			
		applyPolicy(ids);
	}
	
	/**
	 * 下发策略
	 * 
	 * 
	 */
	function applyPolicy(ids) {
		var node = zTree.getSelectedNodes()[0];
		
		$.ajax({
			url : basePath + "/radar/strategy/applyPolicy.do",
			type : "post",
			dataType : 'json',
			data : {
				"ids" : ids, // 绑定 设备的id
				"resourceType" : node.pname
			},
			success : function(result) {
				if (result.data == 'success') {
					layer.msg('操作成功！', {
						icon : 1
					});
					reQuery("equipment");
				} else {
					layer.msg('操作失败！'+result.data, {
						icon : 1
					});
				}
			}
		});
	}

	
/**执行按钮
 * @param feild
 */
function  runexec_equipment(feild){
	var flag=false;
	var id = $(feild).parent().parent().attr("nodeId");
	$("td[code='state']").each(function() {
		var nowid  = $(this).parent().attr("nodeId");
		if(nowid==id){
			var   value=$(this).html();
			if(value=='未应用'||value=='应用失败'){
				flag=true;
			}
		}	
	});
	
	if(flag){
		applyPolicy(id);
	}else{
		layer.msg('已应用成功！不能重复应用！', {
			icon : 1	});
	}
	
}
